function ret = timerPlotIvols2( obj, event, yieldCurve, openOptions )
    
    load 'demo3data'
    
    tic;
    q = 0;
    tolerance = 0.08;
    S = getDoubleFromUrl( 'http://localhost:8678/quotes/OBX.OSE', 17 ); %Get last trade
    
    keyCellArray = keys( openOptions.openInterestMap );
    N = length(keyCellArray);

    call_data = urlread( strcat(['http://localhost:8678/quotes/' openOptions.call_string]) );
    put_data = urlread( strcat(['http://localhost:8678/quotes/' openOptions.put_string]) );

    call_prices = getDoublesFromUrl( call_data, [6 10 17] );
    [row_ind col_ind] = find( call_prices<0.00001 );
    call_prices( row_ind, col_ind ) = NaN;
    
    put_prices = getDoublesFromUrl( put_data, [6 10 17] );
    [row_ind col_ind] = find( put_prices<0.00001 );
    put_prices( row_ind, col_ind ) = NaN;
   
    M_c = size( call_prices,1 );
    M_p = size( put_prices,1 );
    T_c = zeros(M_c,1);
    K_c = zeros(M_c,1);
    r_c = zeros(M_c,1);
    T_p = zeros(M_p,1);
    K_p = zeros(M_p,1);
    r_p = zeros(M_p,1);
    p_ind = 1;
    c_ind = 1;
    for i = 1:N
        tempStr = keyCellArray{i};
        if tempStr(5) < 'M'
            T_c(c_ind,1) = getDecimalExpiration( tempStr );
            K_c(c_ind,1) = str2double( tempStr(6:end) );
            r_c(c_ind,1) = yieldCurve.getSpotRate( T_c(c_ind) );
            c_ind = c_ind + 1;
        else
            T_p(p_ind,1) = getDecimalExpiration( tempStr );
            K_p(p_ind,1) = str2double( tempStr(6:end) );
            r_p(p_ind,1) = yieldCurve.getSpotRate( T_p(p_ind) );
            p_ind = p_ind + 1;
        end
    end
    
    tic;
    ivols_c = [blsImpVolCall( S*ones(M_c,1), K_c, r_c, T_c, call_prices(:,1) , q, tolerance )...
        blsImpVolCall( S*ones(M_c,1), K_c, r_c, T_c, call_prices(:,2) , q, tolerance )...
        blsImpVolCall( S*ones(M_c,1), K_c, r_c, T_c, mean(call_prices(:,1:2),2) , q, tolerance)...
        blsImpVolCall( S*ones(M_c,1), K_c, r_c, T_c, call_prices(:,3) , q, tolerance)];
toc
tic;
    ivols_p = [blsImpVolPut( S*ones(M_p,1), K_p, r_p, T_p, put_prices(:,1) , q, tolerance )...
        blsImpVolPut( S*ones(M_p,1), K_p, r_p, T_p, put_prices(:,2) , q, tolerance )...
        blsImpVolPut( S*ones(M_p,1), K_p, r_p, T_p, mean(put_prices(:,1:2),2) , q, tolerance )...
        blsImpVolPut( S*ones(M_p,1), K_p, r_p, T_p, put_prices(:,3) , q, tolerance )];
toc
    returnMat_c = computePotentialWinLoss( S*ones(M_c,1) - K_c, call_prices(:,1:2) );
    returnMat_p = computePotentialWinLoss( S*ones(M_p,1) - K_p, put_prices(:,1:2) );
    
    figure(1)
    plot( K_c, ivols_c(:,3),'b.-' )
    hold on
    plot( K_p, ivols_p(:,3),'r.-' )
    plot( K_c, ivols_c(:,1),'b:' )
    plot( K_c, ivols_c(:,2),'b:' )
    plot( K_p, ivols_p(:,1),'r:' )
    plot( K_p, ivols_p(:,2),'r:' )
    
%     h = gcf;
%     figure(h)
% %     figure(1)
% %     subplot(2,2,1)
% %     plot( K, ivols_c(:,3),'b.-' )
% %     hold on
% %     plot( K, ivols_p(:,3),'r.-' )
% %     plot( K, ivols_c(:,1),'b:' )
% %     plot( K, ivols_c(:,2),'b:' )
% %     plot( K, ivols_p(:,1),'r:' )
% %     plot( K, ivols_p(:,2),'r:' )
% %     plot( K, ivols_c(:,4),'b+' )
% %     plot( K, ivols_p(:,4),'r+' )
% %     axis([K(1) K(end) 0.1 0.3]);
% %     hold off
% %     xlabel('Strike')
% %     ylabel('Implied Vol.')
%     legend('Call Mid','Put Mid','C Bid', 'C Offer', 'P Bid', 'P Offer')
%     legend('boxoff')


% %     openInterestMat = getOpenInterest( openInterestMap, year_letter, Put_Letter(j), Call_Letter(j), K );
% % %     openInterestMat = randn( length(K),2);
% % %     
% %     figure(2)
% %     subplot(2,2,j)
% %     [AX1,H11,H21] = plotyy( K, returnMat_c(:,3),K, openInterestMat(:,1), 'plot');
% %     hold on
% %     [AX2,H12,H22] = plotyy( K, returnMat_p(:,3),K, openInterestMat(:,2), 'plot');
% %     set(H11,'LineStyle','-','Color','b','Marker','.')
% %     set(H12,'LineStyle','-','Color','r','Marker','.')
% %     set(H21,'LineStyle',':','Color','b','Marker','.')
% %     set(H22,'LineStyle',':','Color','r','Marker','.')
% %     hold off
% %     xlabel('Strike')
%     ylabel('Implied Vol.')
    



    toc
    ret1 = 1;